package com.ruoyi.system.domain.project.research;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 科研项目情况对象 research_projects
 * 
 * @author ruoyi
 * @date 2025-08-04
 */
public class ResearchProjects extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 科研ID */
    private Long id;

    /** 教师工号 */
    @Excel(name = "教师工号")
    private String teacherId;

    /** 教师名称 */
    @Excel(name = "教师名称")
    private String teacherName;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String projectName;

    /** 项目性质 */
    @Excel(name = "项目性质")
    private String projectNature;

    /** 纵向项目类别 */
    @Excel(name = "纵向项目类别")
    private String projectCategory;

    /** 横向项目委托单位 */
    @Excel(name = "横向项目委托单位")
    private String projectUnit;

    /** 立项单位排序 */
    @Excel(name = "立项单位排序")
    private Long projectUnitRanking;

    /** 项目经费（万元） */
    @Excel(name = "项目经费（万元）" )
    private BigDecimal funds;
    /** 到账经费*/
    private BigDecimal bank;
    /** 项目完成时间 */
    private Date finishTime;
    /** 项目状态 */
    private String projectStatus;
    /** 团队成员 */
    private List<String> teamMembers;
    /** 团队成员 */
    private List<ResearchProjectsMember> teamMemberList;
    /** 立项时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "立项时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date initiationTime;

    /** 立项编号 */
    @Excel(name = "立项编号")
    private String approvalNumber;

    /** 项目研究起时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "项目研究起时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date projectStart;

    /** 项目研究完成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "项目研究完成时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date projectEnd;



    /** 开始时间 */
    private Date beginTime;
    /** 结束时间 */
    private Date endTime;

    /**
     * 搜索条件
     */
    private Long deptId;
    // 当前用户角色
    private String currentRole;
    /** 附件 */
    @Excel(name = "附件")
    private String attachment;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setTeacherId(String teacherId) 
    {
        this.teacherId = teacherId;
    }

    public String getTeacherId() 
    {
        return teacherId;
    }

    public void setTeacherName(String teacherName) 
    {
        this.teacherName = teacherName;
    }

    public String getTeacherName() 
    {
        return teacherName;
    }

    public void setProjectName(String projectName) 
    {
        this.projectName = projectName;
    }

    public String getProjectName() 
    {
        return projectName;
    }

    public void setProjectNature(String projectNature) 
    {
        this.projectNature = projectNature;
    }

    public String getProjectNature() 
    {
        return projectNature;
    }

    public void setProjectCategory(String projectCategory) 
    {
        this.projectCategory = projectCategory;
    }

    public String getProjectCategory() 
    {
        return projectCategory;
    }

    public void setProjectUnit(String projectUnit) 
    {
        this.projectUnit = projectUnit;
    }

    public String getProjectUnit() 
    {
        return projectUnit;
    }

    public void setProjectUnitRanking(Long projectUnitRanking) 
    {
        this.projectUnitRanking = projectUnitRanking;
    }

    public Long getProjectUnitRanking() 
    {
        return projectUnitRanking;
    }

    public void setFunds(BigDecimal funds) 
    {
        this.funds = funds;
    }

    public BigDecimal getFunds() 
    {
        return funds;
    }

    public void setInitiationTime(Date initiationTime) 
    {
        this.initiationTime = initiationTime;
    }

    public Date getInitiationTime() 
    {
        return initiationTime;
    }

    public void setApprovalNumber(String approvalNumber) 
    {
        this.approvalNumber = approvalNumber;
    }

    public String getApprovalNumber() 
    {
        return approvalNumber;
    }

    public void setProjectStart(Date projectStart) 
    {
        this.projectStart = projectStart;
    }

    public Date getProjectStart() 
    {
        return projectStart;
    }

    public void setProjectEnd(Date projectEnd) 
    {
        this.projectEnd = projectEnd;
    }

    public Date getProjectEnd() 
    {
        return projectEnd;
    }

    public void setAttachment(String attachment) 
    {
        this.attachment = attachment;
    }

    public String getAttachment() 
    {
        return attachment;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("teacherId", getTeacherId())
            .append("teacherName", getTeacherName())
            .append("projectName", getProjectName())
            .append("projectNature", getProjectNature())
            .append("projectCategory", getProjectCategory())
            .append("projectUnit", getProjectUnit())
            .append("projectUnitRanking", getProjectUnitRanking())
            .append("funds", getFunds())
            .append("initiationTime", getInitiationTime())
            .append("approvalNumber", getApprovalNumber())
            .append("projectStart", getProjectStart())
            .append("projectEnd", getProjectEnd())
            .append("attachment", getAttachment())
            .toString();
    }

    public Date getBeginTime() {
        return beginTime;
    }

    public void setBeginTime(Date beginTime) {
        this.beginTime = beginTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public Long getDeptId() {
        return deptId;
    }

    public void setDeptId(Long deptId) {
        this.deptId = deptId;
    }

    public String getCurrentRole() {
        return currentRole;
    }

    public void setCurrentRole(String currentRole) {
        this.currentRole = currentRole;
    }

    public BigDecimal getBank() {
        return bank;
    }

    public void setBank(BigDecimal bank) {
        this.bank = bank;
    }

    public Date getFinishTime() {
        return finishTime;
    }

    public void setFinishTime(Date finishTime) {
        this.finishTime = finishTime;
    }

    public String getProjectStatus() {
        return projectStatus;
    }

    public void setProjectStatus(String projectStatus) {
        this.projectStatus = projectStatus;
    }

    public List<String> getTeamMembers() {
        return teamMembers;
    }

    public void setTeamMembers(List<String> teamMembers) {
        this.teamMembers = teamMembers;
    }

    public List<ResearchProjectsMember> getTeamMemberList() {
        return teamMemberList;
    }

    public void setTeamMemberList(List<ResearchProjectsMember> teamMemberList) {
        this.teamMemberList = teamMemberList;
    }
}
